import Vue from 'vue'
import App from './App'
import router from './router'
import axios from 'axios'
Vue.config.productionTip = false
import MintUI from 'mint-ui'
import 'mint-ui/lib/style.css'
Vue.use(MintUI)
// 注册 vuex
import Vuex from 'vuex'
Vue.use(Vuex)

var store = new Vuex.Store({
    state: { // this.$store.state.***
      car:[]
    },
    mutations: { // this.$store.commit('方法的名称', '按需传递唯一的参数')
    addToCar(state, goodsinfo) {
      // 点击加入购物车，把商品信息，保存到 store 中的 car 上
      // 分析：
      // 1. 如果购物车中，之前就已经有这个对应的商品了，那么，只需要更新数量
      // 2. 如果没有，则直接把 商品数据，push 到 car 中即可
  
      // 假设 在购物车中，没有找到对应的商品
      var flag = false
      state.car.some(item => {
          if (item.id == goodsinfo.id) {
              item.count += parseInt(goodsinfo.count)
              flag = true
              return true
          }
      })
      // 如果最终，循环完毕，得到的 flag 还是 false，则把商品数据直接 push 到 购物车中
      if (!flag) {
          state.car.push(goodsinfo)
      }
  }
    },
    getters: { // this.$store.getters.***
      // 相当于 计算属性，也相当于 filters
      getAllcount(state){
        var c =0
        state.car.forEach(item=>{
          c+=item.count
        })
        return c
      }
    }
})



// Vue.filter('dateFormat', function (dataStr, pattern = "YYYY-MM-DD HH:mm:ss") {
//   return moment(dataStr).format(pattern)
// })
// 定义全局的时间过滤器  {{ }}  v-bind
Vue.filter('dateFormat', (originVal) => {
  const dt = new Date(originVal)
  const y = dt.getFullYear()
  const m = (dt.getMonth() + 1).toString().padStart(2, '0')
  const d = dt.getDate().toString().padStart(2, '0')
  const hh = dt.getHours().toString().padStart(2, '0')
  const mm = dt.getMinutes().toString().padStart(2, '0')
  const ss = dt.getSeconds().toString().padStart(2, '0')
  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
})
//缩略图插件
import VuePreview from 'vue-preview'
// defalut install
Vue.use(VuePreview)
import '@/lib/mui/css/mui.css'
import '@/lib/mui/css/icons-extra.css'

axios.defaults.baseURL = 'http://www.lovegf.cn:8899/'
Vue.prototype.$http = axios
new Vue({
  el: '#app',
  router,
  render: h => h(App),
  store // 挂载 store 状态管理对象
})
